<?php
/**
 * Created by PhpStorm.
 * User: jiangxiaobo
 * Date: 2019/11/18 0018
 * Time: 22:44
 */
namespace bootstrap\lib\traits;

trait Config
{
    /**
     * 检测配置是否存在
     * @access public
     * @param  string $name 配置参数名
     * @return bool
     */
    public static function has($name)
    {
        return isset(self::$config[$name]);
    }

    /**
     * 获取配置参数 为空则获取所有配置
     * @access public
     * @param  string $name 配置参数名
     * @return mixed
     */
    public static function get($name = null)
    {
        // 无参数时获取所有
        if (empty($name) && isset(self::$config)) {
            return self::$config;
        }

        return isset(self::$config[$name]) ? self::$config[$name] : null;
    }

    /**
     * 设置配置参数 name 为数组则为批量设置
     * @access public
     * @param  string|array $name  配置参数名
     * @param  mixed        $value 配置值
     * @return mixed
     */
    public static function set($name, $value = null)
    {
        if (!isset(self::$config)) self::$config = [];

        // 字符串则表示单个配置设置
        if (is_string($name)) {
            return self::$config[$name] = $value;
        }

        // 数组则表示批量设置
        if (is_array($name)) {
            return self::$config = array_merge(self::$config, $name);
        }

        // 为空直接返回已有配置
        return self::$config;
    }
}